package com.shuda.business.crm.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shuda.business.crm.entity.ChannelSourceEntity;

import java.util.List;

/**
 * 渠道来源配置Service接口
 * @author shuda
 */
public interface ChannelSourceService {

    /**
     * 分页查询渠道来源配置
     * @param page 分页对象
     * @param channelName 渠道名称
     * @param channelType 渠道类型
     * @param channelStatus 渠道状态
     * @param ownerName 负责人姓名
     * @return 分页结果
     */
    IPage<ChannelSourceEntity> getChannelSourcePage(Page<ChannelSourceEntity> page, 
                                                   String channelName, 
                                                   String channelType, 
                                                   String channelStatus, 
                                                   String ownerName);

    /**
     * 根据ID获取渠道来源配置
     * @param id 渠道来源ID
     * @return 渠道来源配置
     */
    ChannelSourceEntity getChannelSourceById(Long id);

    /**
     * 根据编码获取渠道来源配置
     * @param channelCode 渠道编码
     * @param tenantId 租户ID
     * @return 渠道来源配置
     */
    ChannelSourceEntity getChannelSourceByCode(String channelCode, Long tenantId);

    /**
     * 查询活跃的渠道来源列表
     * @return 活跃的渠道来源列表
     */
    List<ChannelSourceEntity> getActiveChannelSources();

    /**
     * 创建渠道来源配置
     * @param channelEntity 渠道来源配置实体
     * @return 是否成功
     */
    boolean createChannelSource(ChannelSourceEntity channelEntity);

    /**
     * 更新渠道来源配置
     * @param channelEntity 渠道来源配置实体
     * @return 是否成功
     */
    boolean updateChannelSource(ChannelSourceEntity channelEntity);

    /**
     * 删除渠道来源配置
     * @param id 渠道来源ID
     * @return 是否成功
     */
    boolean deleteChannelSource(Long id);

    /**
     * 批量删除渠道来源配置
     * @param ids 渠道来源ID数组
     * @return 是否成功
     */
    boolean batchDeleteChannelSource(Long[] ids);

    /**
     * 启用渠道来源
     * @param id 渠道来源ID
     * @return 是否成功
     */
    boolean enableChannelSource(Long id);

    /**
     * 禁用渠道来源
     * @param id 渠道来源ID
     * @return 是否成功
     */
    boolean disableChannelSource(Long id);

    /**
     * 更新排序
     * @param id 渠道来源ID
     * @param sortOrder 排序号
     * @return 是否成功
     */
    boolean updateSortOrder(Long id, Integer sortOrder);

    /**
     * 更新负责人
     * @param id 渠道来源ID
     * @param ownerId 负责人ID
     * @param ownerName 负责人姓名
     * @return 是否成功
     */
    boolean updateOwner(Long id, Long ownerId, String ownerName);
}